/*
数塔取数问题
一个高度为N的由正整数组成的三角形，从上走到下，求经过的数字和的最大值。
每次只能走到下一层相邻的数上，例如从第3层的6向下走，只能走到第4层的2或9上。

   5
  8 4
 3 6 9
7 2 9 5

例子中的最优方案是：5 + 8 + 6 + 9 = 28
Input
第1行：N，N为数塔的高度。(2 <= N <= 500)
第2 - N + 1行：每行包括1层数塔的数字，第2行1个数，第3行2个数......第k+1行k个数。数与数之间用空格分隔（0 <= A[i] <= 10^5) 。
Output
输出最大值
Input示例
4
5
8 4
3 6 9
7 2 9 5
Output示例
28
*/

#include <bits/stdc++.h>
#define ll long long
#define PI acos(-1)
#define M(n, m) memset(n, m, sizeof(n));
const int INF = 1e9 + 7;
const int maxn = 1e5;
using namespace std;
int a[505][505];
int dp[505][505];

int main()
{
    int n;
    while(cin >> n)
    {
        memset(a,0,sizeof(a));
        memset(dp,0,sizeof(dp));
        for(int i = 1; i <= n; i ++)
            for(int j = 1; j <= i; j ++)
                scanf("%d",&a[i][j]);
        for(int i = 1; i <= n; i ++)
            for(int j = 1; j <= i; j ++)
                dp[i][j] = max(dp[i-1][j],dp[i-1][j-1]) + a[i][j];
        int ans = dp[n][0];
        for(int i = 1; i <= n; i ++)
            ans = max(ans,dp[n][i]);
        cout << ans << endl;
    }
    return 0;
}
